home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 1998 June / SGI IRIX 6.5 Applications 1998 June.iso / dist / appletalk.idb / usr / etc / appletalk / atinit.z / atinit
Text File  |  1998-04-27  |  3KB  |  163 lines

  1. #! /bin/csh -f
  2. #
  3. #
  4. #  Copyright (c) 1985, 1992
  5. #  by Xinet Inc.  All Rights Reserved.
  6. #    @(#)atinit.sh    8.4    97/03/04    Xinet
  7. #
  8. #script to start, stop, or restart appletalk servers
  9.  
  10. set path=( /usr/etc/appletalk /bin /usr/{bin,etc,bsd,ucb,sbin} /etc )
  11. set p=$0
  12. set p=$p[1]:t
  13.  
  14. if ( $#argv < 1 ) then
  15.     echo "Usage:  $p [start | halt | restart]"
  16.     exit 1
  17. endif
  18. if (-x /bin/id) then
  19.     if (`/bin/id | grep -c uid=0` > 0) then
  20.         set me=root
  21.     else
  22.         set me=notroot
  23.     endif
  24. else
  25.     set me=`whoami`
  26. endif
  27. if ("$me" != root) then
  28.     echo "You must have root privileges to run this script"
  29.     exit 1
  30. endif
  31.  
  32.  
  33. set CONF_PATH=/usr/etc/appletalk
  34. set SERVICES=$CONF_PATH/services
  35. set ADM_PATH=/usr/adm/appletalk
  36. set NBP_PID=$ADM_PATH/nbp_pid
  37. set AT_PIDS=$ADM_PATH/nbpreg_pids
  38. set TMPA=/tmp/atinitA$$
  39.  
  40. foreach arg ($*)
  41.     #evaluate any arguments that assign a value:
  42.     echo $arg | grep -s '='
  43.     if ($status == 0) then
  44.         eval set $arg
  45.     endif
  46. end
  47.  
  48. set SERVERS=()
  49. if (-f $SERVICES) then
  50.     set SERVERS=(`grep -v '#' $SERVICES | awk '{print $1}'`)
  51. endif
  52.  
  53. #if no services, then done:
  54. if ($#SERVERS == 0) then
  55.     exit 0
  56. endif
  57.  
  58. switch ($1)
  59. case start:
  60. case halt:
  61. case restart:
  62.     set action=$1
  63.     breaksw
  64. case START:
  65.     set action=start
  66.     breaksw
  67. case HALT:
  68.     set action=halt
  69.     breaksw
  70. case RESTART:
  71.     set action=restart
  72.     breaksw
  73. default:
  74.     echo "Usage:  $p [start | halt | restart]"
  75.     exit 1
  76.     breaksw
  77. endsw
  78.  
  79. #kill servers if halt or restart:
  80. if ($action == halt|| $action == restart) then
  81.     if (-f $NBP_PID) then
  82.         cat $NBP_PID
  83.         echo "    nbpd"
  84.         cat $AT_PIDS
  85.  
  86.         set nbppid=`awk '{print $1}' $NBP_PID`
  87.         set atpids=`awk '{print $1}' $AT_PIDS`
  88.  
  89.         if ($#atpids > 0) then
  90.             echo Killing $atpids
  91.             foreach atp ($atpids)
  92.                 (kill $atp >& /dev/null)
  93.                 #NOTE:    kill executed in sub-shell to prevent us
  94.                 #    from exiting on error (kill is a csh builtin)
  95.             end
  96.             sleep 1
  97.             foreach atp ($atpids)
  98.                 (kill $atp >& /dev/null)
  99.                 #NOTE:    kill executed in sub-shell to prevent us
  100.                 #    from exiting on error (kill is a csh builtin)
  101.             end
  102.             sleep 2
  103.             foreach atp ($atpids)
  104.                 #just to make sure:
  105.                 (kill -9 $atp >& /dev/null)
  106.             end
  107.         endif
  108.  
  109.         if ($#nbppid > 0) then
  110.             #kill nbpd last, so other servers can de-register:
  111.             echo Killing nbpd server $nbppid
  112.             (kill $nbppid >& /dev/null)
  113.         endif
  114.     else
  115.         echo "AppleTalk services already halted..."
  116.     endif
  117. endif
  118.  
  119. if ($action == halt) then
  120.     #done, exit normally
  121.     ${CONF_PATH}/atconfig -clear
  122.     exit 0
  123. endif
  124.  
  125. #if we are restarting, we clear the interface and sleep to let routes re-build
  126. if ($action == restart) then
  127.     echo "Clearing AppleTalk configuration (takes 10 seconds)"
  128.     ${CONF_PATH}/atconfig -clear
  129.     sleep 10
  130.     awk -F\     '$2 != "R" {print}' $SERVICES > $TMPA
  131. else
  132.     awk -F\     '{print $1}' $SERVICES > $TMPA
  133.     #clear the log file on start but not restart
  134.     if (-e /usr/adm/appletalk/at_log) then
  135.         rm -f /usr/adm/appletalk/at_log.old
  136.         mv /usr/adm/appletalk/at_log /usr/adm/appletalk/at_log.old
  137.         touch /usr/adm/appletalk/at_log
  138.         chmod 666 /usr/adm/appletalk/at_log
  139.     else if  (-e /var/adm/appletalk/at_log) then
  140.         rm -f /var/adm/appletalk/at_log.old
  141.         mv /var/adm/appletak/at_log /var/adm/appletalk/at_log.old
  142.         touch /var/adm/appletalk/at_log
  143.         chmod 666 /usr/adm/appletalk/at_log
  144.     endif
  145. endif
  146.  
  147.  
  148. set SERVICES=$TMPA
  149. set SERVERS=(`grep -v '#' $SERVICES | awk '{print $1}'`)
  150.     
  151. echo -n "AppleTalk Services: "
  152. foreach srvr ($SERVERS)
  153.     if (-x $srvr) then
  154.         #list server:
  155.         echo -n " $srvr:t"
  156.     endif
  157. end
  158. echo .
  159. csh -fe $SERVICES
  160. set x=$status
  161. rm -f $TMPA
  162. exit $x
  163.